Dot-based data package template

ABSTRACT

A dot-based data package template for an arbitrary shaped data package includes a circular locator component. An orientation component has a single axis of symmetry so that its orientation on a substrate can indicate an orientation of code associated therewith. The template includes predetermined data areas. Dots printed in the predetermined data areas represent at least one parameter of the data package.

CROSS REFERENCE TO RELATED APPLICATIONS

Continuation Application of U.S. Ser. No. 10/664,941 filed on Sep. 22,2003, which is a continuation application of U.S. Ser. No. 09/606,999filed on Jun. 30, 2000, the entire contents of which are hereinincorporated by reference

FIELD OF THE INVENTION

This invention relates to a data package template, tag, with dataembedding.

In particular, although not exclusively, it relates to a dot based datapackage template format structure, or tag format structure (TFS).

BACKGROUND TO THE INVENTION

Various methods, systems and apparatus relating to the present inventionare disclosed in the following co-pending applications filed by theApplicant or Assignee of the present invention on 23 May 2000:09/575,197, 09/575,195, 09/575,159, 09/575,132, 09/575,123, 09/575,148,09/575,130, 09/575,165, 09/575,153, 09/575,118, 09/575,131, 09/575,116,09/575,144, 09/575,139, 09/575,186, 09/575,185, 09/575,191, 09/575,145,09/575,192, 09/609,303, 09/610,095, 09/609,596, 09/575,181, 09/575,193,09/575,156, 09/575,183, 09/575,160, 09/575,150, 09/575,169, 09/575,184,6,502,614, 09/575,180, 09/575,149, 6,549,935, 09/575,187, 09/575,155,6,591,884, 6,439,706, 09/575,196, 09/575,198, 09/575,178, 6,428,155,09/575,146, 09/608,920, 09/575,174, 09/575,163, 09/575,168, 09/575,154.09/575,129, 09/575,124, 09/575,188, 09/575,189, 09/575,162, 09/575,172,09/575,170, 09/575,171, 09/575,161, 10/291,716, 6,428,133, 6,526,658,6,315,399, 6,338,548, 6,540,319, 6,328,431, 6,328,425, 09/575,127,6,383,833, 6,464,332, 6,439,693 6,390,591, 09/575,152, 6,328,417,6,409,323, 09/575,114, 6,604,810, 6,318,920, 6,488,422, 09/575,108,09/575,109 09/575,110.

In addition, various methods, systems and apparatus relating to thepresent invention are disclosed in the following co-pending UnitedStates patent applications filed simultaneously by the applicant orassignee of the present invention: U.S. Ser. No. 09/607,985, U.S. Pat.Nos. 6,398,332, 6,394,573.

The disclosures of these co-pending applications are incorporated hereinby cross-reference. Each application is temporarily identified by itsdocket number, which will be replaced by the corresponding USSN whenavailable.

Of particular relevance is US patent application entitled “Printed PageTag Encoder”, hereafter referred to by reference docket number09/575,109.

Nowadays, nearly every item purchased from a shop contains a barcode ofsome description on the packaging. The barcode provides a convenient wayof identifying an object by a product number. The exact interpretationof the product number depends on the type of barcode. Warehouseinventory tracking systems let users define their own product numberranges, while inventories in shops must be more universally encoded sothat products from one company don't overlap with products from anothercompany.

Barcodes themselves have been specified in a large number of formats.The older barcode formats contain characters that are displayed in theform of lines. The combination of black and white lines describe theinformation the barcodes contains. Often there are two types of lines toform the complete barcode: the characters (the information itself) andlines to separate blocks for better optical recognition. While theinformation may change from barcode to barcode, the lines to separateblocks stay constant. The lines to separate blocks can therefore bethought of as part of the constant structural components of the barcode.

Barcodes are read with specialized reading devices, such as lightpens,gun readers and scanners, that pass the extracted data onto a computerfor further processing.

To help ensure that the extracted data was read correctly, checksumswere introduced as a crude form of error detection. More recent barcodeformats use redundancy encoding schemes such as Reed-Solomon. Such ascheme is utilized in the Aztec 2D barcode as disclosed U.S. Pat. No.5,591,956. Often the degree of redundancy encoding is user selectable.

Two dimensional barcodes have been developed in which the information isencoded in two dimensions, instead of storing the information as aseries of lines where the data is extracted from a single dimension.Just as with the original barcodes, the 2D barcode contains bothinformation and structural components for better optical recognition.FIG. 1 shows an example of a Quick Response (QR) Code, developed byDenso of Japan and disclosed in U.S. Pat. No. 5,726,435. Note thebarcode cell is comprised of two areas: a data area (depending on thedata being stored in the barcode), and a constant position detectionpattern. The constant position detection pattern is used by the readerto help locate the cell itself, then to locate the cell boundaries, toallow the reader to determine the original orientation of the cell. Theorientation can be determined by the fact that there is no 4th cornerpattern.

One problem associated with the range of barcodes available is thathardware for producing these barcodes is specific to the particularbarcode format. As printers become more and more embedded, there is anincreasing desire for real-time printing of these barcodes.

OBJECT OF THE INVENTION

It is an object of the present invention to provide a data packagetemplate with data embedding.

It is a further object of the invention to provide a generic tag formatstructure that supports generic encoding schemes.

Other objects of the present invention will be evident from thefollowing discussion.

SUMMARY OF THE INVENTION

In one form, although it need not be the only, or indeed the broadest,form, the invention resides in a generic data package template forrepresenting data formed from a plurality of dots, said data packagetemplate comprising:

-   -   an arbitrarily shaped constant background pattern formed from a        plurality of dots and/or blanks; and    -   at least one arbitrarily shaped data area;        -   said data area containing data dots located at positions            determined by an encoding scheme.

In another form, the invention resides in a method of packaging data ina generic data package template formed from a plurality of dots, themethod including the steps of:

-   -   constructing a bit array of entries for each dot position within        said data package, said array of entries defining whether each        said dot is part of an arbitrarily shaped constant background        pattern or an arbitrarily shaped data area;    -   encoding said data for storage in said data area; and    -   printing said plurality of dots encoded with said data.

BRIEF DESCRIPTION OF THE DRAWINGS

In order that the invention may be more fully understood and put intopractical effect, preferred embodiments of the invention will now bedescribed, by way of example only, and with reference to theaccompanying drawings, wherein:

FIG. 1 shows a prior art two dimensional quick response code;

FIG. 2 shows a Netpage tag background pattern;

FIG. 3 shows data areas within the Netpage tag shown in FIG. 2;

FIG. 4 is a magnified view of the Netpage tag with data rendered at 1600dpi;

FIG. 5 shows the effect of output resolution on a tag component;

FIG. 6 shows the representation of data in a two dimensional quickresponse code;

FIG. 7 shows a simple 3×3 tag structure; and

FIG. 8 shows a scaled up version of the tag of FIG. 7.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

In this application the term tag is used to refer to the combination ofdata and any other components (such as a position detection pattern, ablank space, a surround, or the like), that must be rendered to helphold, locate or read data. A tag therefore contains the followingcomponents:

-   -   at least one data area. The data area is the reason for the tag.        The tag data area(s) contains the encoded data (optionally        redundancy-encoded, perhaps simply check-summed). The bits of        the data are placed within the data area at locations specified        by a tag encoding scheme.    -   constant background patterns, which typically includes a        constant position detection pattern. These help a tag reader to        locate the tag. They include components that are easy to locate        and may contain orientation and perspective information in the        case of 2D tags. Constant background patterns may also include        such patterns as a blank area surrounding the data area or        position detection pattern. These blank patterns may aid in the        decoding of the data by ensuring that there is no interference        between data areas.

For ease of description the data package template will be described interms of common optical recognition, such as bar code scanners and thelike. It will be appreciated that the concepts are equally applicable totactile recognition, and possibly even aural recognition.

In most tag encoding schemes there is at least some constant backgroundpattern, but it is not necessarily required by all. For example, if thetag data area is enclosed by a physical space and the reading means usesa non-optical location mechanism (e.g. physical alignment of surface todata reader) then a position detection pattern is not required.

Different tag encoding schemes have different sized tags, and allocatethe physical tag area to constant position detection pattern and dataarea differently. For example, the QR code, as shown in FIG. 1, has 3fixed blocks 10 at the edges of the tag for position detection patternand a data area 11 in the remainder. By contrast, the Netpage tagstructure shown in FIGS. 2, 3, and 4 contains a circular locatorcomponent 20, an orientation component 21, and several data areas. FIG.2 shows the Netpage tag constant background pattern in a resolutionindependant form. FIG. 3 is the same as FIG. 2, but with the addition ofthe data areas 30 to the Netpage tag. FIG. 4 is an example of dotplacement and rendering to 1600 dpi for a Netpage tag. In FIG. 4 asingle bit of data is represented by many physical output dots to form ablock within the data area.

The data area contains the data for the tag. Depending on the tag'sencoding format, a single bit of data may be represented by a number ofphysical printed dots. The exact number of dots will depend on theoutput resolution and the target reading/scanning resolution. FIG. 5shows the effect of resolution on part of a line from a traditionalbarcode. When rendered at resolution R, a line part may be rendered as 2dots wide by 5 dots high. The same line rendered at twice the resolution(2R) will be represented by twice as many dots in each dimension.

As a further example, in the QR code shown in FIG. 1, a single bit isrepresented by a dark module or a light module, where the exact numberof dots in the dark module or light module depends on the renderingresolution and target reading/scanning resolution. For example, and withreference to FIG. 6, a data module may be represented by a square blockof printed dots (all on 60 for binary 1, or all off 61 for binary 0).

Here, a single bit of data may be represented in the printed tag by anarbitrary printed shape. The smallest shape is a single printed dot,while the largest shape is theoretically the whole tag itself. Forexample, a macrodot comprised of many printed dots in both dimensions.

An ideal generic tag definition structure allows the generation of anarbitrary printed shape from each bit of data.

Given an original number of bits of data, and the desire to place thosebits into a printed tag for subsequent retrieval via a reading/scanningmechanism, the original number of bits can either be placed directlyinto the tag, or they can be redundacy-encoded in some way. The exactform of redundancy-encoding will depend on the tag format.

The placement of data bits within the data area of the tag is directlyrelated to the rendundancy mechanism employed in the encoding scheme.Data bits may be placed together in 2D so that burst errors are averagedout over the tag data, thus typically being correctable. For example,all the bits of Reed-Solomon codewords would be spread out over theentire tag data area to minimize the potential effect of a burst error.

Since the data encoding scheme and shape and size of the tag data areaare closely linked, it is desirable to have a generic tag formatstructure. This allows the same data structure and rendering embodimentto be used to render a variety of tag formats.

The Tag Format Structure (TFS) of the present invention is a dot baseddata package template. It allows the definition of an arbitrary shapeddata package composed of dots and the definition of how the data itselfis stored as dots within the data package. The TFS is optimised so thatthe tag can be rendered in real time. The TFS contains an entry for eachdot position within the tag's bounding box. Each entry specifies whetherthe dot is part of the constant background patterns, which typicallyincludes a constant position detection pattern, or part of the tag'sdata component.

The TFS is similar to a bitmap in that it contains one entry for eachdot position within a bounding box of the tag. The TFS therefore hasTagHeight×TagWidth entries, where TagWidth matches the size of thebounding box for the tag in the line dimension, and TagHeight matchesthe size of the bounding box for the tag in the dot dimension. A singleline of TFS entries for a tag is called the tag line structure.

The TFS has the following parameters associated with it:

-   -   TagWidth is the width of the bounding box (in dots) for the tag;    -   TagHeight is the height of the bounding box (in dots) for the        tag;    -   EntryWidth is number of bits in each entry of the TFS (minimum        2);    -   NumTagDataBits is the number of data bits associated with each        tag (minimum 0).

To encode a specific tag instance, the data to be inserted into the tagneeds to be supplied:

-   -   TagData is an array of NumTagDataBits bits containing the actual        data to be stored in the tag data area. These bits have        preferably already been redundancy encoded according to the tag        encoding scheme.

Each entry in the TFS is interpreted according to the low order bit (bit0):

-   -   If bit 0 is clear (=0), then the output dot for this entry is        part of the constant background pattern. The dot value itself        comes from bit 1. If bit 1=0, the output is 0, and if bit 1=1,        then the output value=1.    -   If bit 0 is set (=1), then the output dot for this entry comes        from the TagData array. The remaining bits of the entry (bits 1        to NumTagDataBits−1) contain the address of the TagData bits        that are to be used.

Each entry in the TFS is interpreted independently, and has no relianceon state information. This is important so that random access to theentries is possible, which may be necessary if multiple renderingengines are processing different parts of a page (e.g., a tag may besplit across two or more rendering engines).

If the size of the printed dots are too small, the tag can be scaled inone of several ways. The tag itself may be scaled by N dots in eachdimension, which increases the number of entries in the TFS.Alternatively, the output from the TFS generator can be scaled up bystandard bitmap scaling techniques—for example, by pixel replication oraveraging of supersamples.

For example, if the original TFS was 21×21 entries, and the scaling werea simple 2×2 dots for each of the original dots, the TFS could beincreased to be 42×42. To generate the new TFS from the old, each entryacross each line of the TFS would be repeated, and then each line of theTFS would be repeated. The net number of entries would be increasedfourfold (2×2).

The TFS allows the creation of macrodots instead of simple scaling. Withreference to FIG. 7 and the simple example of a 3×3 dot tag depictedtherein, a physically large printed form of the tag may be desired,where, for example, each of the original dots may be represented by 7×7printed dots. If replication by 7 is performed in each dimension of theoriginal TFS (either by increasing the size of the TFS by 7 in eachdimension or by placing a scale-up on the output of the tag generatoroutput), 9 sets of 7×7 square blocks would be produced. Instead, each ofthe original dots in the TFS may be replaced by a 7×7 dot definition ofa rounded dot. FIG. 8 shows the results.

Consequently, the higher the resolution of the TFS the more printed dotscan be printed for each macrodot, where a macrodot represents a singledata bit of the tag. The more dots that are available to produce amacrodot, the more complex the pattern of the macrodot can be. Forexample, FIG. 4 shows the Netpage tag structure rendered such that thedata bits are represented by an average of 8 dots×8 dots (at 1600 dpi),but the actual structure of a dot is not square in shape. This allowsthe Netpage tag to be subsequently read at any orientation.

A very simple example is shown by the 9 dot tag of FIG. 7. There is a 3dot constant background pattern to aid locating the tag, and theremaining 6 dots are used for data. This means that we can store 6 bitsof data in the tag.

However, let us assume that the 6 bits are actually only representativeof 3 bits of original data, since the 3 original bits have beenredundancy encoded by adding their inverse. For example, if the original3 bits of data were 111, the 6 bits would be 101010. If the original 3bits of data were 101, the resulting 6 bits would be 100110.

The relationship of dot positions in the tag was chosen to take accountof the redundancy encoding of the data. In this simple example, the topline of the tag is always 111. The second line contains the first twodata bits. Knowing the data encoding scheme, the first two bits must beinverses of each other. Consequently, a second line of 111 can never beachieved although 101, 011, 100 and 010 may be achieved. The same istrue for the third line of the tag. Therefore, the constant pattern of111 can not be achieved when the tag is produced, except in thepre-determined constant area.

The following parameters summarize the simple tag design:

-   -   TagWidth=3    -   TagHeight=3    -   EntryWidth=4 (1+3, 1 for the low order bit, and 3 to index into        the 6 data bits)    -   NumTagDataBits=6

With reference to FIG. 7, the first line of the TFS would be 0010, 0010,0010 to represent 3 dots that are always on, regardless of the databeing stored. The first entry of the second line in the TFS would be0001 to indicate that the contents of bit 0 of the TagData array forthis tag should be output at this dot position. The second entry of thesecond line would be 0011 for the bit 1 contents of the TagData array tobe output at this dot position. The third entry of the second line inthe TFS would be 0101 for the bit 2 contents.

The first entry of the third line in the TFS would be 1001 to indicatethat the contents of bit 4 of the TagData array should be output at thisdot position. Line 2, entry 2 would be 1011 for bit 5 and line 2, entry3, in the TFS would be 0111 to indicate that whatever is stored in bit 3of the TagData array for the tag should be output at this dot position.

Thus the entire TFS would be (arranged in entry order):

-   -   0010, 0010, 0010    -   0001, 0011, 0101    -   1001, 1011, 0111

Note that the codes 1101 and 1111 are never used since these would pointto non-existant data bits 6 and 7 (we only have data bits 0-5).

Given the TFS just described, it is possible to produce a tag for anyset of 6 bits. i.e. given a 6 bit length TagData array. If the 6 bitswere 101010, the output from the tag encoder in the 9 bit positionswould be:

-   -   1 (constant)    -   1 (constant)    -   1 (constant)    -   1 (from data bit 0)    -   0 (from data bit 1)    -   1 (from data bit 2)    -   1 (from data bit 4)    -   0 (from data bit 5)    -   0 (from data bit 3)

If the 6 bits were 100110, the output from the tag encoder in the 9 bitpositions would be:

-   -   1 (constant)    -   1 (constant)    -   1 (constant)    -   1 (from data bit 0)    -   0 (from data bit 1)    -   0 (from data bit 2)    -   1 (from data bit 4)    -   0 (from data bit 5)    -   1 (from data bit 3)

With reference to FIG. 1 again, the sample QR code tag is 21 blocks by21 blocks. If each block was comprised of a single dot, then the QR codetag is 21 dots×21 dots. In addition, there are 249 data blocks in thedata area, representing 249 bits. The basic parameters of TagWidth andTagHeight can now both be set to =21. EntryWidth=9 (1+8, 1 for the loworder bit, and 8 to index into the 249 data bits). NumTagDataBits=249.Thus, the Tag Format Structure would be a total of 441 entries (21×21),with each entry being 9 bits. The first 7 entries would be 000000010 todefine an output dot constant of 1, and entry 8 would be 000000000 todefine an output dot constant of 0. The next entry would be xxxxxxxx1,where xxxxxxxx is the address of the bit number that represents the 9thblock on the first line. If the block comes from bit 129 of the 249 databits, then xxxxxxxx will be 10000001. If the block comes from bit 62 ofthe 249 data bits, then xxxxxxxx will be 00111110. There would be atotal of 5 of these data reference entries, followed by 000000000, and 7entries of 000000010 to finish the line.

The second line of the Tag Format Structure would be 00000010 followedby 5 entries of 000000000, one entry of 00000010, and one entry of000000000 to represent the 8 constant data output dots of 1, 0, 0, 0, 0,0, 1, and 0 respectively. There would then be 5 entries of datareferences pointing to the various bits of the 249 data bits for the 2ndrow of the tag.

The final line of the Tag Format Structure would be 7 entries of00000010, one entry of 000000000, and then 13 entries pointing tovarious data bits that are in the final row of the tag. TagData is anarray of 249 bits containing the actual data to be stored in the tagdata area. These bits must have already been redundacy encoded accordingto the QR tag encoding scheme.

The Tag Format Structure of the present invention may be implemented ina Tag Encoder of the type disclosed in the aforementioned copending USpatent application docket number 09/575,109. The operation of the TagEncoder is briefly summarized herein.

The Tag Encoder (TE) provides functionality for tag-enabledapplications, and it typically requires the presence of IR ink at theprint head (although K ink or an alternative might be used for tags inlimited circumstances). The TE encodes fixed data for the page beingprinted, together with specific tag data values into anerror-correctable encoded tag which is subsequently printed in infraredor black ink on the page. The TE might place tags on a triangular gridallowing for both landscape and portrait orientations. Basic tagstructures are rendered at 1600 dpi, while tag data might be encoded asarbitrarily shaped macrodots (with a minimum size of 1 dot at 1600 dpi).

The TE takes the following as input:

-   -   A portrait/landscape flag;    -   A template defining the structure of a single tag;    -   A number of fixed data bits (fixed for the page);    -   A flag that defines whether or not to redundantly encode the        fixed data bits or whether to treat the bits as already having        been encoded;    -   A number of variable data bit records, where each record        contains the variable data bits for the tags on a given line of        tags;    -   A flag that defines whether or not to redundantly encode the        variable data bits or whether to treat the bits as already        having been encoded.

The output from the tag encoder (TE) is a 1600 dpi bi-level layer ofwhere tag data should be printed. The output is via a 1-bit wide FIFO.The tags are subsequently preferably printed with an infrared-absorptiveink that can be read by a tag sensing device.

Even though the conceptual implementation of the tag encoder (TE) allowstags to have a variable structure as well as fixed and variable datacomponents, the TE does impose range restrictions on certain encodingparameters. However, these restrictions are a direct result of buffersizes and the number of addressing bits, chosen for the most likelyencoding scenarios. It is a simple matter to adjust the buffer sizes andcorresponding addressing to allow arbitrary encoding parameters in otherimplementations.

The TE writes a bi-level tag bitstream to the bi-level tag FIFO. The TEis responsible for merging the encoded tag data with the basic tagstructure, and placing the dots in the output FIFO in the correct orderfor subsequent printing. The encoded tag data is generated from theoriginal data bits on-the-fly to minimize buffer space.

The TagData array is divided into fixed and variable components. Forexample, if a tag holds 512 bits of data, some of these bits may befixed for all tags. Some may vary from tag to tag. For example, theUniversal product code allows a country code and a company code. Sincethese bits don't change from tag to tag, these bits can be preloadedinto the tag generator in order to reduce the bandwidth when producingmany tags. Another example is a Netpage tag generator. A single printedpage contains a number of Netpage tags of the form shown in FIGS. 2-4.The page-ID will be constant across all the tags, even though theremainder of the data within each tag may be different for each tag. Byreducing the amount of variable data being passed to the tag encoder foreach tag, the overall bandwidth to the encoder can be reduced.

Depending on the embodiment of the encoder, these parameters will beeither implicit or explicit, and may limit the size of tags renderableby the system. For example, a software tag encoder may be completelyvariable, while a hardware tag encoder may have a maximum number of tagdata bits.

Instead of accepting the complete number of TagData bits encoded by anexternal encoder, a tag encoder could accept the basicnon-redundancy-encoded data bits and encode them as required for eachtag. This can lead to significant savings of bandwidth. In the Netpagetag case, as described in copending U.S. patent application Ser. No.09/575,109, only 120 bits of original data are provided per tag, and thetag encoder encodes these 120 bits into 360 bits. By having theredundancy encoder on board the tag encoder the effective bandwithrequired is reduced by ⅔.

In the description of the TFS above, bit 0 defines whether the outputdot is stored immediately with the entry (bit 1 contains the output bitvalue) or whether the higher bits form the address to look up theTagData structure. It is a trivial change to use different bitpositioning to represent the same information.

To reduce storage requirements for certain types of tags, the TFS canuse double indirection. In the above description, when bit 0 of the TFSentry is set, the high order bits form the address of the bit from theTagData array to be used. However, if the total number of entries in theTFS is large, and the maximum number of different bits for a given lineof the TFS is comparatively smaller than NumTagDataBits, then it can beconvenient to use double indirection.

Using double indirection, the data-address entries of the TFS point intoa second array, stored at the end of the TFS line. The second arraycontains the actual address within the TagData array to use. Forexample, if there are only ever 8 different data bits used on a givenline of a tag, the EntryWidth may be set to 4 (1 bit to determinewhether or not it is necessary to look up the data bit or whether to usebit 1 directly). If bit 0 is 1, then bits 1-3 are used to form anaddress 0-7. The address looks up a table of 8 n-bit entries that pointinto the TagData array. If there are 512 entries in the TagData array,then n=9. If TagWidth=100, then the basic encoding would have used 1000bits (100×10 bits) for each line of the TFS. If double indirection isused, and there are only ever 8 different data bits used on a given lineof a tag, then each line of the TFS will require 472 bits (100×4bits+8×9 bits). The saving is about 50% which may be a valuable factor,depending on the application.

Another modification is to change from bi-level output to contoneoutput. In the present invention, each output dot is usually either onor off. If bit 0=0, then bit 1 contains the output bit to use. This canreadily be extended to form a larger number of bits. For example, if4-bit contone printing is desired, i.e., if bit 0=0, then the output is4 bits formed by bits 1-3. Of course, the EntryWidth would need to beincreased appropriately. Likewise, the address pointing to the TagDataarray would be pointing to the nth entry, where, instead of the entrybeing a single bit, it would be a plurality of bits (depending on thenumber of bits in each contone output dot).

If the complete TFS is stored locally, e.g. on the chip, it can beaccessed either row-wise or column-wise to provide for landscape andportrait orientations. If the tag format structure is not stored locally(e.g. in off-chip memory), and is accessed one line-at-a-time, it ispreferable to have two copies of the structure—one for landscape, andone for portrait printing. For example, in co-pending U.S. patentapplication Ser. No. 09/575,109, the tag encoder is on an ASIC, whilethe TFS is in an external DRAM. To reduce storage on-board the ASIC,only the current line of the TFS is loaded at a time. Since the accessto the TFS is line based, there needs to be two TFS structures stored inthe external DRAM—one for portrait orientation, and one for landscapeorientation printing. Theoretically they could be arbitrarily different.In practice however, they are the same TFS rotated through 90 degrees.

Throughout the specification the aim has been to describe the preferredembodiments of the present invention without limiting the invention toany one embodiment or specific collection of features. Persons skilledin the relevant art may realize variations from the specific embodimentsthat will nonetheless fall within the scope of the invention.

1. A dot-based data package template for an arbitrary shaped datapackage, the template comprising a circular locator component; anorientation component having a single axis of symmetry so that itsorientation on a substrate can indicate an orientation of codeassociated therewith; predetermined data areas; and dots printed in thepredetermined data areas to represent at least one parameter of the datapackage.
 2. A dot-based data package template as claimed in claim 1, inwhich the orientation component is positioned centrally with respect tothe locator component.
 3. A dot-based data package template as claimedin claim 1, in which the dots printed in the predetermined data areasrepresent at least one dimension of a bounding area of the data package.4. A dot-based data package template as claimed in claim 3, in which thedots printed in the predetermined data areas represent a width and aheight of said bounding area.
 5. A dot-based data package template asclaimed in claim 3, in which the dots printed in the predetermined dataareas represent a number of data bits associated with the template.
 6. Adot-based data package template as claimed in claim 1, in which the dotsprinted in the predetermined data areas include redundancy coding.
 7. Adot-based data package template as claimed in claim 6, in which theredundancy encoding is Reed-Solomon encoding.